Add slider illustration
authorMatthias Clasen <mclasen@redhat.com>
Tue, 23 Nov 2010 22:38:28 +0000 (17:38 -0500)
committerCarlos Garnacho <carlosg@gnome.org>
Sat, 4 Dec 2010 14:39:38 +0000 (15:39 +0100)
docs/reference/gtk/Makefile.am
docs/reference/gtk/images/sliders.png [new file with mode: 0644]
gtk/gtkstylecontext.c
tests/styleexamples.c

index 62f4556b8cbeb83135a688ccf62151e0a49b04fc..e45d3426d73a3777bb6f75f3ad87762a8bb25326 100644 (file)
@@ -347,7 +347,8 @@ HTML_IMAGES = \
        $(srcdir)/images/arrows.png                                     \
        $(srcdir)/images/expanders.png                                  \
        $(srcdir)/images/background.png                                 \
-       $(srcdir)/images/frames.png
+       $(srcdir)/images/frames.png                                     \
+       $(srcdir)/images/sliders.png
 
 # Extra options to supply to gtkdoc-fixref
 FIXXREF_OPTIONS=--extra-dir=../gdk/html \
diff --git a/docs/reference/gtk/images/sliders.png b/docs/reference/gtk/images/sliders.png
new file mode 100644 (file)
index 0000000..e832aa7
Binary files /dev/null and b/docs/reference/gtk/images/sliders.png differ
index 205a7e69908b1ef7e851a5908c8c28afbd4886f9..78957e6ca19d09d16912694d847e8eb56174f2d7 100644 (file)
@@ -3265,6 +3265,11 @@ gtk_render_line (GtkStyleContext *context,
  * @width, @height. @orientation defines whether the slider is vertical
  * or horizontal.
  *
+ * <example>
+ * <title>Typical slider rendering</title>
+ * <inlinegraphic fileref="sliders.png" format="PNG"/>
+ * </example>
+ *
  * Since: 3.0
  **/
 void
index 248ca645dd5ded058943e32bd1c123c43e6e0d61..b66add59aca9545ad4b72c63284a68327a85302c 100644 (file)
@@ -177,21 +177,56 @@ static gboolean
 draw_cb_activity (GtkWidget *widget, cairo_t *cr)
 {
   GtkStyleContext *context;
+  GtkWidgetPath *path;
 
   context = gtk_widget_get_style_context (widget);
+  gtk_style_context_notify_state_change (context,
+                                         gtk_widget_get_window (widget),
+                                         NULL,
+                                         GTK_STATE_FLAG_ACTIVE,
+                                         TRUE);
+
   gtk_style_context_save (context);
 
-  gtk_style_context_add_class (context, "spinner");
-  gtk_style_context_set_state (context, 0);
+  path = gtk_widget_path_new ();
+  gtk_widget_path_append_type (path, GTK_TYPE_SPINNER);
+  gtk_widget_path_iter_add_class (path, 0, "spinner");
+  gtk_style_context_set_path (context, path);
+  gtk_widget_path_free (path);
+
+  gtk_style_context_set_state (context, GTK_STATE_FLAG_ACTIVE);
   gtk_render_activity (context, cr, 12, 12, 12, 12);
-  gtk_style_context_set_state (context, GTK_STATE_FLAG_INSENSITIVE);
-  gtk_render_activity (context, cr, 36, 12, 12, 12);
 
   gtk_style_context_restore (context);
 
   return TRUE;
 }
 
+static gboolean
+draw_cb_slider (GtkWidget *widget, cairo_t *cr)
+{
+  GtkStyleContext *context;
+  GtkWidgetPath *path;
+
+  context = gtk_widget_get_style_context (widget);
+  gtk_style_context_save (context);
+
+  path = gtk_widget_path_new ();
+  gtk_widget_path_append_type (path, GTK_TYPE_SCALE);
+  gtk_widget_path_iter_add_class (path, 0, "slider");
+  gtk_widget_path_iter_add_class (path, 0, "scale");
+  gtk_style_context_set_path (context, path);
+  gtk_widget_path_free (path);
+
+  gtk_render_slider (context, cr, 12, 22, 30, 10, GTK_ORIENTATION_HORIZONTAL);
+  gtk_render_slider (context, cr, 54, 12, 10, 30, GTK_ORIENTATION_VERTICAL);
+
+  gtk_style_context_restore (context);
+
+  return TRUE;
+}
+
+
 
 static char *what;
 
@@ -212,6 +247,8 @@ draw_cb (GtkWidget *widget, cairo_t *cr)
     return draw_cb_frame (widget, cr);
   else if (strcmp (what, "activity") == 0)
     return draw_cb_activity (widget, cr);
+  else if (strcmp (what, "slider") == 0)
+    return draw_cb_slider (widget, cr);
 
   return FALSE;
 }